package cn.feizhu.aimarket.config;

import cn.dev33.satoken.stp.StpInterface;
import cn.feizhu.aimarket.model.domain.User;
import cn.feizhu.aimarket.service.UserService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 自定义权限验证接口扩展
 * Sa-Token会通过此接口获取用户的角色和权限信息
 * 
 * @author 飞猪
 */
@Component
public class StpInterfaceImpl implements StpInterface {

    @Resource
    private UserService userService;

    /**
     * 返回一个账号所拥有的权限码集合 
     */
    @Override
    public List<String> getPermissionList(Object loginId, String loginType) {
        // 本项目暂时不需要权限功能，返回空集合
        return new ArrayList<>();
    }

    /**
     * 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
     */
    @Override
    public List<String> getRoleList(Object loginId, String loginType) {
        List<String> roleList = new ArrayList<>();
        
        try {
            // 根据用户ID查询用户信息
            Long userId = Long.valueOf(loginId.toString());
            User user = userService.getById(userId);
            
            if (user != null && user.getUserRole() != null) {
                // 将用户角色添加到角色列表中
                roleList.add(user.getUserRole());
            }
        } catch (Exception e) {
            // 如果查询失败，记录日志但不抛出异常
            System.err.println("获取用户角色失败: " + e.getMessage());
        }
        
        return roleList;
    }
}